/**
 * @ClassName LC520 检测大写字母
 * 我们定义，在以下情况时，单词的大写用法是正确的：
 * <p>
 * 全部字母都是大写，比如 "USA" 。
 * 单词中所有字母都不是大写，比如 "leetcode" 。
 * 如果单词不只含有一个字母，只有首字母大写， 比如 "Google" 。
 * 给你一个字符串 word 。如果大写用法正确，返回 true ；否则，返回 false 。
 * @Author ykx
 * @Date 2024/6/23 12:29
 * @Version 1.0
 */
public class LC520 {
    public static void main(String[] args) {
        LC520 lc520 = new LC520();
        System.out.println(lc520.detectCapitalUse("FlaG"));
    }

    public boolean detectCapitalUse(String word) {
        char c = word.charAt(0);

        // 首字母大写
        if (c >= 'A' && c <= 'Z') {
            if (word.length() > 1) {
                char secondLetter = word.charAt(1);
                if (secondLetter >= 'A' && secondLetter <= 'Z') {
                    for (int i = 2; i < word.length(); i++) {
                        if (word.charAt(i) < 'A' || word.charAt(i) > 'Z') {
                            return false;
                        }
                    }
                } else if (secondLetter >= 'a' && secondLetter <= 'z') {
                    for (int i = 2; i < word.length(); i++) {
                        if (word.charAt(i) < 'a' || word.charAt(i) > 'z') {
                            return false;
                        }
                    }
                }
            }

        } else if (c >= 'a' && c <= 'z') {
            // 首字母小写，剩下字母也必须全小写
            for (int i = 1; i < word.length(); i++) {
                if (word.charAt(i) < 'a' || word.charAt(i) > 'z') {
                    return false;
                }
            }
        }
        return true;
    }

}
